package br.com.qualityempresa.seguranca

class RegraAcesso implements Comparable {

	Boolean permitir = true
	Acesso acesso
	Perfil perfil
		
	static belongsTo = [acesso: Acesso, perfil: Perfil]

	static constraints = {
		permitir(nullable: false)
		acesso(nullable: false, validator: {  it?.validate() })
	}

	public boolean isExpressaoCoincide(String controle, String acao) {
		return acesso.isExpressaoCoincide(controle, acao)
	}

	@Override
	public String toString() {
		return "$permitir - $acesso";
	}

	int compareTo(obj) {
		if (permitir && !obj.permitir) {
			return 1
		} else if (!permitir && obj.permitir) {
			return -1
		} else {
			return acesso.compareTo(obj.acesso)
		}
	}
}
